package com.treeliked.netdiskdemo.service;

import com.treeliked.netdiskdemo.model.Response;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

/**
 * 文件操作接口
 *
 * @author lqs2
 * @date 2018/11/29, Thu
 */
public interface FileService {

    /**
     * 保存上传的文件
     *
     * @param file     表单文件
     * @param path     文件存储路径
     * @param author   文件作者
     * @param response 响应
     * @throws IOException 抛出所有异常
     */
    void saveFile(MultipartFile file, String path, String author, Response response) throws IOException;


    /**
     * 下载文件
     *
     * @param ips oss 文件输入流
     * @param ops 客户端输出流
     * @throws Exception 抛出所有异常
     */
    void downloadFile(InputStream ips, OutputStream ops) throws Exception;

    /**
     * 通过文件id获取路径
     *
     * @param id 文件id
     * @return 文件
     * @throws Exception 抛出所有异常
     */
    com.treeliked.netdiskdemo.model.dataobject.File getFileById(String id) throws Exception;

    /**
     * 根据文件id删除文件
     *
     * @param id 文件id
     * @throws Exception 抛出所有异常
     */
    void deleteFileById(String id) throws Exception;


}
